storage

讓套件可以存讀資料以及監聽儲存項目的更動。

儲存系統基於 Web Storage API,有一些不同,包括:

  • 非同步
  • 值的作用域在套件而不是某個特定的網域(後端的所有腳本與內容腳本都可用同樣的鍵值)。
  • 儲存的值可以是任何的 JSON-ifiable 值而並非只能是 String。這包括了: 陣列物件。但只有在內容可以被以 JSON 表示的時候,這表示不包含 DOM 節點。你不需要特地把值轉爲 JSON Strings來儲存它們,它們在內部就是以 JSON 來表示的。
  • 同一個 API 呼叫中可以設置或取得複數鍵值。

要使用這個 API 你必須在 manifest.json 裡面加入 "storage" 的權限

每個套件都有自己的儲存空間,它們可以被切分爲不同種類的儲存。

雖然這個 API 與Window.localStorage很相似,建議你不要在套件裡使用 Window.localStorage 儲存套件相關資料。Firefox 在用戶由於隱私問題清除歷史記錄與資料時會清除 localStorage API 儲存的資料,而 storage.local API 儲存的則會留著。

備註: 儲存空間不會被加密,所以你不應該把它們用來儲存用戶的機密資料。

型別

storage.StorageArea

表示儲存空間的物件。

storage.StorageChange

表示儲存空間變化的物件。

屬性

storage 有三個屬性,各自表示不同種類的儲存空間。

storage.sync

表示 sync 儲存空間。sync 儲存空間裡的項目會被瀏覽器同步,所以可以跨裝置在所有已登入瀏覽器實例裡面使用。

storage.local

表示 local 儲存空間。local 儲存空間裡的項目會被侷限在安裝套件的機器上。

storage.managed

表示 managed 儲存空間。managed 儲存空間的項目由網域管理者設置而且對套件唯讀,修改這項會導致錯誤。

事件

storage.onChanged

當儲存空間裡的一個或更多項目被修改時觸發。

瀏覽器兼容性

範例擴充套件

備註: 此 API 基於 Chromium 的 chrome.storage API 而來,文件改作自 Chromium 程式碼裡的 storage.json